import dayjs from "dayjs"
import utc from "dayjs/plugin/utc"
import timezone from "dayjs/plugin/timezone"
import {ElMessage} from "element-plus";

// 引入插件
dayjs.extend(utc)
dayjs.extend(timezone)


/** 去除vlue两边的空格 */
export const trimValue = (value: string) => {
  if (value) {
    const trimmedValue = value.trim();
    return trimmedValue.length > 0 ? trimmedValue : undefined;
  }
}

/** 格式化日期 */
export const formatDate = (time: string | number | Date) => {
  return time ? dayjs.utc(time).local().format("YYYY-MM-DD") : "N/A"
}

/** 格式化字节单位 */
export const formatBytes = (bytes: number) => {
  if (bytes === 0) return '0 B';

  const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
  const i = parseInt((Math.floor(Math.log(bytes) / Math.log(1024))).toString());

  if (i === 0) {
    return bytes + ' ' + sizes[i];
  }

  const value = (bytes / Math.pow(1024, i)).toFixed(2);
  return value + ' ' + sizes[i];
}


/** 格式化日期时间 */
export const formatDateTime = (time: string | number | Date) => {
  return time ? dayjs.utc(time).local().format("YYYY-MM-DD HH:mm:ss") : "N/A"
}

/** 格式化时间戳 */
export const formatTimestamp = (time: string | number | Date) => {
  return time ? new Date(time).getTime() / 1000 : 0
}

/** 用 JS 获取全局 css 变量 */
export const getCssVariableValue = (cssVariableName: string) => {
  let cssVariableValue = ""
  try {
    // 没有拿到值时，会返回空串
    cssVariableValue = getComputedStyle(document.documentElement).getPropertyValue(cssVariableName)
  } catch (error) {
    console.error(error)
  }
  return cssVariableValue
}

/** 用 JS 设置全局 CSS 变量 */
export const setCssVariableValue = (cssVariableName: string, cssVariableValue: string) => {
  try {
    document.documentElement.style.setProperty(cssVariableName, cssVariableValue)
  } catch (error) {
    console.error(error)
  }
}

/** 获取随机颜色 */
export const getRandomColor = (): string => {
  const letters = "0123456789ABCDEF"
  let color = '#'
  for (let i = 0; i < 6; i++) {
    color += letters[Math.floor(Math.random() * 16)]
  }
  return color
}

/** 字符过长就进行截取*/
export function truncateText(inputString: string, maxLength: number) {
  if (inputString.length > maxLength) {
    // 如果字符串超过最大长度，截取前 maxLength-3 个字符并添加省略号
    return inputString.slice(0, maxLength - 3) + '...';
  } else {
    // 如果字符串没有超过最大长度，直接返回原字符串
    return inputString;
  }
}


/** 复制数据到剪贴板 */
export function CopyToClipboard(text, message: string,) {
  let msg = "已复制到剪贴板"
  if (message) {
    msg = message
  }

  navigator.clipboard.writeText(text)
    .then(() => {
      ElMessage.success(msg);
    })
    .catch((error) => {
      ElMessage.error("复制失败：", error);
    })
}
